import asyncio
import re
import traceback
from openai import AsyncOpenAI
import httpx
import time
import json
from config import *

class ChatGPT:
    """OpenAI chatgpt"""

    def __init__(self, model_name=None, api_url="https://api.openai.com/v1", api_key=None, proxy=None, history=[]):
        self.model_name = "gpt-3.5-turbo"
        if model_name:
            self.model_name = model_name

        self.api_url = api_url
        self.api_key = api_key
        self.proxy = proxy
        self.tokenizer = None
        self.history = history

    async def generate(self, messages, stream=True, **kwargs):
        # 避免传入的messages内容过大，保持最新的5条数据
        # params = dict(
        #     model=self.model_name,
        #     temperature=0.8,
        #     max_tokens=131072,
        #     frequency_penalty=0.2,
        #     presence_penalty=0.2,
        #     top_p=0.8
        # )
        params=openai_dict
        params.update(kwargs)

        try:
            chat_completion_resp = await self.openai.chat.completions.create(messages=messages, stream=stream, **params)
            # content = {'role': '', 'content': ''}
            async for event in chat_completion_resp:
                if event.choices[0].finish_reason == 'stop':
                    StopAsyncIteration
                    break
                if event.choices[0].delta.content is None:
                    continue
                for delta_v in event.choices[0].delta.content:
                    yield delta_v

        except Exception as err:
            traceback.print_exc()
            print(f'OpenAI API 异常: {err}')
            StopAsyncIteration

    def load_model(self):
        pass

    async def chat(self, query, system_prompt='', history=[], **kwargs):
        history = self.get_history()
        proxy = None if self.proxy == '' else self.proxy
        # Use proxy parameter instead of proxies for httpx.AsyncClient
        client = httpx.AsyncClient(proxy=proxy) if proxy else httpx.AsyncClient()
        self.openai = AsyncOpenAI(
            api_key=self.api_key,
            base_url=self.api_url,
            http_client=client
        )

        kwargs["model"] = self.model_name
        if len(system_prompt) != 0:
            messages = history + [{"role": "system", "content": system_prompt}, {"role": "user", "content": query}]
        else:
            messages = history + [{"role": "user", "content": query}]

        # 收集所有响应内容
        full_response = []
        async for chunk in self.generate(messages, stream=True, **kwargs):
            full_response.append(chunk)
        
        return ''.join(full_response)

    def get_history(self):
        history = self.history
        type_map = {
            1: "user",
            0: "assistant",
        }
        history = [{"role": type_map[h.get("status", 0)],
                    "content": h.get("content", "")} for h in history]

        return history


def split_buddhist_text(text, max_chars=None):
    """分割佛经文本为段落"""
    if max_chars is None:
        from config import max_chars
    
    # 首先按照句号、问号进行初步切分
    sentences = re.split(r'([。？])', text)
    # 将分隔符重新拼接到句子后面
    sentences = [sentences[i] + (sentences[i+1] if i+1 < len(sentences) else '') 
                for i in range(0, len(sentences)-1, 2)]
    
    paragraphs = []
    current_para = ""
    
    for sentence in sentences:
        sentence = sentence.strip()
        # 如果当前段落加上新句子不超过最大字符数，或者当前段落为空
        if len(current_para) + len(sentence) <= max_chars or not current_para:
            current_para += sentence
        else:
            # 否则保存当前段落，开始新段落
            paragraphs.append(current_para)
            current_para = sentence
    
    # 添加最后一个段落
    if current_para:
        paragraphs.append(current_para)
    
    return paragraphs


async def process_text(llm_input,config_dict=config_dict,config_dict_name_select=config_dict_name_select,system_prompt=None) -> str:
    """处理单个文本块"""
    select_model_config=config_dict[config_dict_name_select]
    model_name=select_model_config["model_name"]
    api_url=select_model_config["api_url"]
    api_key=select_model_config["api_key"]

    # 如果没有提供系统prompt，使用配置文件中的默认prompt
    if system_prompt is None:
        from config import select_prompt
        system_prompt = select_prompt

    model = ChatGPT(
        model_name=model_name,
        api_url=api_url,
        api_key=api_key,
        proxy=None,
        history=[],
    )
    response = await model.chat(llm_input, system_prompt=system_prompt)
    return response



async def text_deal_llm(text):
    """
    text = "相反，。。    炉香？战若法界，蒙勋，诸佛海会心遥文，随处结，祥云，，诚意方音，，诸佛现全身。"
    """
    start_time = time.time()
    
    texts = split_buddhist_text(text)
    system_prompt = select_prompt
    
    tasks = [process_text(text_chunk, system_prompt=system_prompt) for text_chunk in texts]
    results = await asyncio.gather(*tasks)
    
    # Simple concatenation of all results
    combined_text = "".join(results)
    
    # Calculate total time
    end_time = time.time()
    total_time = end_time - start_time
    
    # Return as JSON
    return json.dumps({
        "combined_text": combined_text,
        "processing_time_seconds": total_time
    }, ensure_ascii=False)

async def main():
    # 8k-长
    # text = "相反，。。    炉香？战若法界，蒙勋，诸佛海会心遥文，随处结，祥云，，诚意方音，，诸佛现全身。。南无香。云盖菩萨摩诃萨。，南无香。云盖菩萨摩诃萨。，南无香。云盖菩萨摩诃萨。   奉请八金刚奉请清除斋金刚，奉请辟毒金刚。奉请黄髓求金刚。，奉请，白净水。金刚，奉请，炽生火。金刚，奉请定持斋。金刚，奉请，紫贤。金刚，奉请大神金刚。。   奉请是菩萨奉请，金刚卷菩萨。奉请，金刚锁菩萨。奉请，金刚爱菩萨。奉请，金刚与菩萨。   发院文。   其手三界尊，，皈依十方佛，。我今发宏愿，持此金刚经，，上报四重恩，下祭三图苦。。若有见闻者，，夕发菩提心，，尽此一报身。，同生即乐国，云何犯。   云何得长寿？，金刚不换身，复以何因远。，得大兼故力。云何于此经究竟到彼岸？。愿佛开微密，广谓众生说。。   南无本师释迦牟尼佛。南无本师释迦牟尼佛。南无本师释迦牟尼佛。。   开经济。。   无上甚身微妙法，百千万劫难遭遇。，我今见闻得受持，，愿解如来真使意。。   金刚波若波罗蜜经，瑶琴，三藏法师鸠摩罗十意。。   如是我闻？，一时佛在社卫国，其数己孤独远。，与大庇丘众千250人聚。20世尊时时着衣持波入舍卫大城起时于其城中。次地其矣。，还至本处，饭时器，收衣钵洗，足矣，夫坐而坐。。。    1.长老须补体，，在大众中即从坐起，，偏袒右肩，，右膝着地，，，合掌恭敬而白佛眼。。   须有世尊，如来善护念诸菩萨，，善父主诸菩萨。。世尊善男子，善女人法阿耨多罗三藐三菩提心，，云何应助，，云何降服其心？。佛言，善哉善哉，须不提如如所说，如来善护念诸菩萨，。善复主诸菩萨。。如今地。   一听，当谓汝说，善男子，善女人发阿耨多罗三藐三菩提心。，应如是助，，如是降服其心。。为然世尊，愿要欲闻。佛告须菩提。诸菩萨摩诃萨，应如是降服其心。。所有一切众生之类。，若卵生，若胎生，若失生，若。。    化生若有色，若无色，，若有想，，若无想，，若非有想非无想，，我皆令入无于涅盘，而灭度之。。如是灭度，无量无数，无边众生，识无众生得灭度者，，何以故？须菩提，若菩萨由我相人相众生相，，寿者相，即非菩萨。。   复赐须菩提。，菩萨与法应无所著，，行于不施。。所谓不注色不施，，不助生香味，触法不施。。   须菩提菩萨因如是不施，，不著于相，，何以故？？若菩萨不著相，不施，，其福，得不可思量。。   徐福提？。   鱼与云河，东方西空可思两否？。   佛也是尊。。   须不体南西北方四为上下虚空。，可思两否，否也是尊。。   徐福体？。   菩萨无柱，相不施，，福得亦复。汝是，不可思量。。   须菩提菩萨，但应如所浇著。。   需不提。。   与云河可以伸向剑毒来否？。   否也是尊，，不可以身相，得见如来，何以故？。如来所说，身相，即非身相。。   报告须菩提，。凡琐有相，，皆是虚妄。，若见诸象非相，，则见如来。。   须菩提白佛眼，世尊，颇有众生，得闻如是。，言说张句，生实信否？。   佛告须菩提莫作事说，，如来灭后后500岁。，有持界修佛者，，于此章句能生信心。，以此为实，，当知世人不逾一佛，二佛34五佛，而众善根。。以于无量千万佛所众诸。善根。文是章句乃至一念生尽信者。。须菩提。   如来悉之悉见，，是诸众生得如是无量福德。，何以故？是诸众生，无复我相人相众生相。，寿者相，，无法相，，亦无非法相。。   何以故？是诸众生，，若心取相，，，则为浊。我人众生受者。，若取法相，，及浊。我人众生受者，，何以故？，若取非法相，及浊，我人众生寿者。，，是故不应取法。，不应取非法，。以是亦故，如来常说，如等比。。   知我说法？，如法狱者，，法上应舍何谤非法。。须不提于云何。，如来得阿耨多罗三藐三菩提也。。如来有所说法也。。   须菩提？言，如我解佛，所说意，无有定法，，名阿耨多罗三藐三菩提，，亦无有定法，如来可说，，何以故，如来所说法，皆不可取。，不可说，非法非非法，，所以者和一切贤圣皆以无为法而有差别。。   须菩提于于云何？，若人满三000大千世界，七宝，以用不失，，世人所得福德宁为多否。。须菩提，言，甚多是尊，，何以故是福德，即非福德性。，是故，如来说，福得多。。若复有人于此经中受持、，乃至四聚济等。，谓他人说，其福甚。。   何以故须不提，一切诸佛，即诸佛阿耨多罗三藐三菩提法，皆从此经出。须菩提。所谓佛法者，，，即非佛法。。须菩提，于遇云何，须多环，能作是念，，我得须多还果否须菩提也。，佛也是尊。何以故须多。。   名为入流，而无所入，，不入色生香味。触法，是名虚托还。。须菩提，欲以云何，斯托罕能作事。念。，我得司托罕，，我否须菩提言，否，也是尊，，何以故斯托罕名亦往来，而时无往来。，是名司托罕。   须菩提予意云河，阿诺罕能做事，念，，我得阿诺罕我否。。须菩提言，否，也是尊，，何以故阿诺罕名为不来，，而时无不来。，是故名阿诺罕。。须菩提。   于云河，阿罗汉能做试验，我得阿罗汉道否。   须不提言，，佛也。世尊，何以故实无有法，名阿罗汉。。世尊，若阿罗汉作世念，，我得阿罗汉道，，即为浊，，我人众生寿者。。世尊佛说，，我得无真三昧。，人中最为第一，，是第一礼。狱阿罗汉，，我不做世念，，我是离遇阿罗汉。。。   世尊，我若作世念，，我得阿罗罕道。，世尊则不说，须菩提，是要阿兰。诺恨者，，以须菩提，实无所行而名须菩提。，是要阿兰诺恒。佛告须菩提，于欲云何。。如来昔在然灯佛所，，于法有所得否。。否也世尊。如来在燃灯佛所，于法十无所得。。   嗯。   须不体于于，云何菩萨庄严佛度否？，否也是尊，何以故庄严佛度者。，即非庄严。，是名庄严。。   是故须菩提诸菩萨摩诃萨。，应如是生清净心，，不应著色生心。，不应著生香味，触法生心。。因无所著而生其心。。须菩提，譬如有人身如须弥山。王，于以云何？，是身为大风。。   须菩提也，圣大世尊，何以故？？佛说非身是名大身。。   需不提。。   如恒河中所有沙树，如是沙等。恒河，于与云河，是诸恒河沙，宁为多否。须菩提言，甚多世尊，，但诸恒河尚多无术，，何况其沙。须菩提，，我今实言告汝若有善男子善女人，以七宝芒尔索。恒河杀术三0大千世界以用不是。。    之得福多否？，须菩提言甚多是尊，报告须菩提。，若善男子，，善女人，，于此，经中乃至受持四聚济等为他人说，而此福德圣前福德。复自须菩提。虽说是经乃至四句济等。，当知此处，，一切世间天人、阿修罗皆因。。    供仰如佛塔庙，，何况有人竟能受持独诵。须不提，当知世人成就最上第一，稀有之法。。若是经典所在之处，，，即为有佛，，若尊重弟子。。     20须菩体白佛眼，世尊当河名此经，我等云何凤池。。    佛告须菩提是经名为金刚般若波罗蜜，，以是名字，汝当奉池。，所以者何。。须菩提佛说般若波罗蜜，，即非般若波罗蜜。。须菩提欲云何，如来有所说法否。。须菩提白佛言，，世尊如来无所说。。须菩提于。   云河三0大千世界所有微尘是为多否，须菩提言，甚多世尊。   须不提诸微臣，如来说非微臣，，是名微臣。如来说，世界非世界，，是名世界。。   需不提与云何可以32项剑毒来否？。   否也是尊，不可以三2相得见如来。。   何以故？？如来说，三2相，，即是非象，是名三2相。。   须不体，，若有善男子、、、善女人，以恒河沙等生命不施。。若负有人于此，经中，，乃至受持、四具祭等。，为他人说，祈福甚多。。    20须菩提闻说是经，深解意趣，，涕为悲泣，，而白佛言。。   昔有世尊，，佛说如是甚深经典，。我从熙来所得慧眼，，未曾得闻如是之经。。世尊若复有人得闻，是精，信心，清净，，则生始相。。当知世人成就第一，稀有功德。。世尊是实相者，则是非相。。是故如来说，名史相。   世尊，。我今得闻如是经典，信解，受持，不足，为难。。若当来世后500岁，，其有众生，得闻，是经，信解受持。，是人则为第一稀有，，何以故？此人无我相人相众生相，，寿者相，。所以者和我相即是非相人相众生相，寿者相。。    即是非象，何以故离，一切诸相，则名诸佛。。佛告须菩提。，如是如是，，若复有人得闻是经，，不经不怖，不畏。，当知世人，，甚为稀有。。何以故？须菩提如来说第一波罗蜜，，即非第一波罗蜜。，是名第一波罗蜜。。须菩提人。   人汝菠罗蜜，如来说，非人辱菠罗蜜，何以故？？须不提，若昔为歌力王割节身体，我于耳时无我相，，无人相，，无众生相。，无寿者，相。，何以故？我于往昔结节知解时。，若有我相，人相众生相，，寿者相，应生嗔恨。。须不提。。   又念过去，，于无百事做人辱先人，于而所事。，无我相，，无人相，无众生相。，无受者相，，是故须菩体，。菩萨应离一切相法阿耨多罗三藐三菩提心。，不应住色生心。，不应住生香，谓畜法生心。，应生无所助心，若心有。   则为非助是故佛说，菩萨心，不应著色不施。。须菩提菩萨为利益，一切众生，，因如是不施。。如来说，，一切诸像，，，即是非象，又说一切众生，，即非众生。。须不提，，如来是真与者，食与者。，如与者，不诳于者，无异于者，。须不提。。   如来所得法，此法无实无虚。须不提，，若菩萨心住于法，，而行。不施，，如人入案，，，则无所见。。若菩萨心不住，法，而行不失，。如人有目，，日光明照，。见种种色。须不提当来之世，，若有善男子，，善女人，，能于此，经受持独诵，，则为如来以。。    佛智慧惜知是人，，，惜见是人，，皆得成就，无量，无边功德。，须不提。。    若有善男子、，、善女人、，，初日分以恒河沙等身布施，中日分复以恒河沙等身布施，后日分，，亦以恒河沙等身布施。。如是无量百千万，以劫，，以身不施，。若复有人闻此经典，，，信心不逆，，其福，圣彼。。何况书写，授持读诵，，为人解说，，须不提。。    以要言之，是经有不可思议，，不可称量，无边功德。如来未发。大乘者说，，未发。最上乘者说，，，若有人能受持，独诵。，广为人说。如来惜之，是人。，惜见是人，皆得成就。，不可量，，不可称，无有边。，不可思议功德。，如是人等，则为何旦如来阿耨多罗3秒？。   三菩提何以故？须菩提，若要小法者，，濯我见人见众生界。，受者见，，则于此经，不能听受，不诵。，为人解说。须菩提在在处处，若有此经，，一切世间天人阿修罗所应供养。当知此处，，则为世。他。皆应恭敬。，坐礼为绕。   .以诸花香而散其处，。复赐须菩提。善男子善女人，，受持读诵此经，，若为人清见，。世人先世罪业，因堕恶道。，以今世人清见故先世罪业，则为消灭，当得阿耨多罗三藐三菩提。须菩提，，我念过去不量阿僧。其劫，与燃灯佛。   前得值8 4000万亿，挪于托诸佛，悉皆供养，成世，无空过者，。，若复有人于后，莫世，能受持读诵。此经，所得功德，于我所供养诸佛功德，百分不及一，千万亿份，乃至算术，譬玉，所不能及。。    须不提，若善男子，，善女人，，于后，莫世有受持读诵，此经，所得功德，。我若据说者，，，或有人文，心，则狂乱。，无以不信。须不提，当知是经，亦不可思议。，果报亦不可思议。。    20须不提，白佛眼，世尊，善男子、善女人法，阿耨多罗三藐三菩提心，云何应柱，，云何降福其心？。   佛告须菩提，善男子、善女人，，法阿耨多罗三藐三菩提心者，，当生如是心，。我应灭度一切众生，，灭度一切众生矣，，而无有一众生，识灭度者。。    何以故须不提，若菩萨有我相人相众生相，，寿者相，，则非菩萨。。所以者和须不提，实无有法法阿耨多罗三藐三菩提心者。。    薛福提。。    于云何，如来于燃灯佛所，有法得阿耨多罗三藐三菩提否。。    佛也是尊，，如我解佛所说意，佛于燃灯佛所，，无有法得阿耨多罗三藐三菩提。。佛言，，如是如是。，须菩提。实无有法，如来得阿耨多罗三藐三菩提。。须菩提。，若有法，如来得阿耨多罗三藐三菩提者，。然灯佛，则不与我受祭。。如于来世。。   当得作佛号释迦牟尼，一时无有法，得阿耨多罗三藐三菩提，，是故燃灯佛于我受祭，所誓言。。如于来世，，当得作佛，，号释迦牟尼。，何以故？如来者，即诸法如意。。若有人言，，如来得阿耨多罗三藐三菩提。，须菩提识无有法。。   佛得阿耨波罗三藐三菩提。。   须菩提如来所得阿耨多罗三藐三菩提，，于是中无实无须。。是故如来说，，一切法皆是佛法。。须菩提所言，一切法者，，即非一切法，，是故名一切法。。   休不停。。   譬如人生常大，，须不提言，世尊，如来说，，。人生常大，，则为非大身，，是名大身。。   须不提，菩萨，亦汝是，，若作誓言，，，我当灭度，无量众生，则不明菩萨。。何以故？须不提，实无有法，，名为菩萨。是故佛说，一切法，无我无人，，无众生无寿者。。   须菩提。，若菩萨作誓言，，，我当庄严佛度，，是不明菩萨。，何以故？。如来说，，庄严，佛度者，，，即非庄严。，是名庄严。。   须菩体，若菩萨通达无我法者，如来说名，真是菩萨。。。须菩提于云何。，如来有肉眼，否，如是世尊。，如来有肉眼。   须不提于与云何。，如来有天年否？，如是世尊。，如来有天年。。   须不提于与云合。，如来有慧眼，否如是是尊。，如来有慧眼。。   须不提欲云何？，如来有法眼否？，如是是尊。，如来有法眼。   须不提，于于云何，如来有佛眼否？，如是世尊。，如来有佛眼。。   须不提于遇云河，，如恒河中所有沙，，佛说是沙否，，如是是尊，，如来说是沙。。须不提于遇云何。，如遇恒河中所有沙。，有如是沙等恒河。，是诸恒河所有沙树佛世界。，如是宁为多否。，甚多世尊。   佛告须菩提，。而所国度中，所有众生，，若甘种心，如来惜之，，何以故。。如来说，诸心皆为非心。，是名唯心，。所以者得。须菩提，过去心不可得，，现在心不可得，，未来心不可得。。须菩提。   于遇云何，若有人满300 0大千世界，七宝，以用故失，诗人已是因缘，，得福多否。。如是是尊，，此人以是因缘，，得福甚多。。须不提，若福得有时，如来不说得福得多。，以福得无故，，如来说得福得多。。须不提于于，云何佛可以。。   剧足色身见否？。   否也是尊，如来不应以具足色身见，，何以故？。如来说具足色身。，即非具足色身。，是名具足色身。。   须菩体于与云何，如来可以具足诸相见否。。   否也是尊，如来不应以具足，诸相见。何以故？？如来说，诸像具足，即非具足。，是名诸象具足。。须不提，，，如勿为如来作事念，。我当有所说法，，莫作是念，，何以故？，若人言，如来有所说法，，即为谤佛，，不能解。我所说故。须不提说。。   说法者无法可说，，是名说法。。20会命须不提白佛眼。。   世尊，颇有众生，，于未来，世闻说是法生信心否？。佛言，，须不提，彼非众生，，非不众伤，何以故，须不提众伤众伤者。，如来说非众伤，是名众伤。。   须不提白佛眼。。   世尊佛得阿耨多罗三藐三菩提，唯吾所得也。。   佛言如是如是，须菩提，，我于阿耨多罗三藐三菩提，，乃至无有少法可得。，是名阿耨多罗三藐三菩提，。复自须菩提，是法平等，，，无有高相。。是名阿耨多罗三藐三菩提，。以无我，无人无众生。，无寿者，，，修一切善法，，则得阿耨多罗。。   佛三藐三菩提须菩提所言，善法者，如来说即非善法，，是名善法。。须菩提。，若三千大千世界中所有诸须米善王，如是等七宝聚，有人持用不施。。若人以此般若波罗蜜经，乃至四聚即等受持毒诵，为他人说，于前福得百分。   不及一百千万亿份，乃至算术譬喻所不能及。。   需不提。。   于云何如等物为如来作事念，，我当度众生。，须不提莫作事念，何以故？时，无有众生，，如来度者，。若有众生，，如来度者，，如来则有我人众生寿者。。    须不提，。如来说有我者，则非有我，。而凡夫之人，以为有我。须不提。凡夫者，，。如来说则非凡，夫。须不提。。   与与云合，可以三2相温如来否。须不提言，，如是如是，以三2相温如来。。   佛言须不提，，若以三2相观，如来者，转轮圣亡，，则是如来。。   须菩提白佛眼世尊，如我解佛所说议，不应以三2相观如来。。    20世尊而说忌言。。   若以色见我，以因声求我，诗人行写道，，不能见如来。。   须不提。，如若作世念，，如来不以具足相故。，得阿耨多罗三藐三菩提。须不提莫作誓念，如来不以具足相故。，得阿耨多罗三藐三菩提，。须不提，如若作世念法。阿耨多罗三藐三菩提心者。，说。诸法断灭。。   莫作事念，可以故法阿耨多罗三藐三菩提心者，，于法不说，断面相。。   须菩提。，若菩萨以满恒河沙等世界，七宝持用不施。。若复有人知一切法，，无我得成于人。。此菩萨圣前菩萨所得功德。，何以故？须菩提以诸菩萨不受福得故。。   须菩提白佛言，世尊，云何菩萨无受福德。须菩提菩萨所作福德，不应贪酌，，是故说不受福德。。   需不提。。   若有人言，如来若来若去，，若做若卧，，诗人不解，。我所说意，，何以故如来者，无所从来，，亦无所去。，，故名如来。。   需不提。。   若善男子，，善女人，以三千大千世界，遂为微臣。，于云何？，是微尘众，宁为多否。。甚多是尊，，何以故？？若是微臣重，时，有者，佛则不说是微臣众。，所以者和佛说微臣众，，则非微臣众，是名微臣众。。   世尊如来所说，，三千大千世界，则非世界，，是名世界，。何以故？？若世界时有者，，则是一和相。。如来说亦和相，，则非一和相，是名一和相。须不提一和相者，则是不可说，。但凡夫之人，贪酌其事。须不提，若人言，。佛说。   我见人见众生见，寿者见，须不提，予以云何。。是人解我所说亦否，否也是尊。，世人不解如来。，所说益。何以故。？世尊说。，我见人见众生见，，寿者见，，即非我见人见众生见，。受者见，是名。我见人见众生见。。    见寿者见须不提法，阿耨多罗三藐三菩提心者，，于一切法，应如是之。，如是见，如是信解，，不生法相。。须不提所言法相者，如来说，即非法相，是名法相。。   须不提。，若有人已满无量阿僧奇世界七宝持用不施。。若有善男子、，、善女人、，法菩萨心者，，持于此经，乃至四俱记等。，授持读诵，，为人演说，，其福圣彼。。    云何为人演说，不取一相，，如如不动，，何以故？一切有违法，，如梦幻泡影，，如露，亦如电，，应作如是观。。    佛说是经矣长老须菩体，及诸比丘比丘尼优婆萨优婆倚一切世间天人阿修罗文佛所说，皆大欢喜。，信受奉行。。    金刚波若波罗蜜经。。    金刚障。。    断一生信，绝相超宗，顿望人法，，皆真空。，波若味重重。，四聚融通，福德叹无穷。。南无祈缘会上，佛菩萨。，南无祈缘会上，佛菩萨。，南无祈缘会上佛菩萨。为相记。。   发大菩提心，，地狱放光明，，人天得谢脱，，三界复清净。。我及诸众生罪障，惜消除，，，安稳得如意，身心无挂碍，愿以此功德，，普及于一切。。我等与众生，皆共成佛道。"
    text = "相反，。。    炉香？战若法界，蒙勋，诸佛海会心遥文，随处结，祥云，，诚意方音，，诸佛现全身。"
    # text="炉香？战若法界，蒙勋，诸佛海会心遥文，随处结，祥云，，诚意方音，，诸佛现全身。。南无香。云盖菩萨摩诃萨。，南无香。云盖菩萨摩诃萨。，南无香。云盖菩萨摩诃萨。   奉请八金刚奉请清除斋金刚，奉请辟毒金刚。奉请黄髓求金刚。"
    texts = split_buddhist_text(text)

    # 使用配置文件中的系统prompt，也可以自定义
    system_prompt = select_prompt

    # 创建并发任务，现在用户输入文本作为user消息，系统prompt作为system消息
    tasks = [process_text(text_chunk, system_prompt=system_prompt) for text_chunk in texts]
    
    # 并发执行所有任务
    results = await asyncio.gather(*tasks)
    
    # 打印所有结果
    # res_list = []
    for i, result in enumerate(results, 1):
        print(f"段落 {i} 结果:")
        print(result)
        print("-" * 50)
        
    
if __name__ == "__main__":
    # asyncio.run(main())
    text = "相反，。。    炉香？战若法界，蒙勋，诸佛海会心遥文，随处结，祥云，，诚意方音，，诸佛现全身。"
    result=asyncio.run(text_deal_llm(text))
    print(f"result:{result}")